package org.example.backend.demos.web.ManagementModule.service;

import org.example.backend.demos.web.ManagementModule.entity.Project;
import org.example.backend.demos.web.result.PageResult;
import org.example.backend.demos.web.result.Pages;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 项目表(Project)表服务接口
 *
 * @author makejava
 * @since 2025-09-08 14:59:06
 */
@Service
public interface ProjectService {

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    Project queryById(Long id);

    /**
     * 分页查询
     *
     * @param project 筛选条件
     * @param pageRequest      分页对象
     * @return 查询结果
     */
    Page<Project> queryByPage_limit(Project project, PageRequest pageRequest);

    /**
     * 分页查询
     *
     * @param page      页码
     * @param size      每页数量
     * @return  查询结果
     */
    Page<Project> GetProjectByPage(int page, int size);

    /**
     * 分页查询
     *
     * @param pages      分页对象
     * @return  查询结果
     */
    Pages queryByPage(Pages pages);

    /**
     * 新增数据
     *
     * @param project 实例对象
     * @return 实例对象
     */
    Project insert(Project project);

    /**
     * 修改数据
     *
     * @param project 实例对象
     * @return 实例对象
     */
    Project update(Project project);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 是否成功
     */
    boolean deleteById(Long id);

    /**
     * 查询所有数据
     *
     *
     * @return 查询结果
     */
    List<Project> queryAll();

    /**
     * 任意字段查询
     * @param keyword
     * @return
     */
    List<Project> searchByKeyword(String keyword);
}
